﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Ejemplo_vacio_sin_uso.Models;
using System.Data;

namespace Ejemplo_vacio_sin_uso.Controllers
{
    public class VotarController : Controller
    {
        private UrnaVirtualContext db = new UrnaVirtualContext();
        //
        // GET: /Votar/

        public ActionResult Index(long DNI)
        {
            var lista = db.Candidatos.ToList();

            ModeloVotar model = new ModeloVotar
            {
                dni = DNI,
                candidatos = lista
            };

            return View(model);
        }

        public ActionResult votar(long dni, long candidato)
        {
            Persona unaPersona = (from dt in db.Personas
                                  where dt.DNI == dni
                                  select dt).FirstOrDefault();

            if (unaPersona.voto == true)
            {
                return RedirectToAction("Error");
            }
            if (dni != null)
            {
                Voto unVoto = new Voto();
                unVoto.id_Candidato = candidato;
                unVoto.HoraVoto = DateTime.Now;
                db.Votos.Add(unVoto);
                db.SaveChanges();
                unaPersona.voto = true;
                db.Entry(unaPersona).State = EntityState.Modified;
                db.SaveChanges();
            }

            return RedirectToAction("Gracias");
        }

        public ActionResult Gracias()
        {
            return View();
        }

        public ActionResult Error()
        {
            return View();
        }

        public ActionResult Porcentaje() 
        {
            var candidatos = db.Candidatos.ToList();
            long votos = 0;
            long totalvotos = (from b in db.Votos
                             select b).Count();

            foreach (Candidato candidato in candidatos)
            {
                votos = (from b in db.Votos
                        where b.id_Candidato == candidato.id
                             select b).Count();
                candidato.votos = votos * 100 / totalvotos;
                db.Entry(candidato).State = EntityState.Modified;
                db.SaveChanges();
            }

            List<Candidato> listaCandidatos = db.Candidatos.ToList();
            return View(listaCandidatos);
        }

    }
}
